# 参考资料：
# 机器学习进阶-阈值与平滑-图像平滑操作(去噪操作) 1. cv2.blur(均值滤波) 2.cv2.boxfilter(方框滤波) 3. cv2.Guassiannblur(进行高斯滤波) 4. cv2.medianBlur(进行中值滤波)
# https://www.cnblogs.com/my-love-is-python/p/10391923.html
import cv2
import matplotlib.pyplot as plt
import numpy as np

# 1.图像中存在一些噪音点
img = cv2.imread('dog.jpg')
cv2.imshow('original', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 2. cv2.blur 使用均值滤波，即当对一个值进行滤波时，使用当前值与周围8个值之和，取平均做为当前值
mean = cv2.blur(img, (3, 3))
cv2.imshow('mean', mean)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 3. cv2.boxFilter表示进行方框滤波
box = cv2.boxFilter(img, -1, (3, 3), normalize=True)
cv2.imshow('box', box)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 当normalize=False表示对加和后的9个点，不进行求平均的操作，如果加和后的值大于255，使用255表示
box_1 = cv2.boxFilter(img, -1, (3, 3), normalize=False)
cv2.imshow('box_1', box_1)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 4. cv2.GaussianBlur 根据高斯的距离对周围的点进行加权,求平均值1，0.8， 0.6， 0.8 
gaussian = cv2.GaussianBlur(img, (5, 5), 1)
cv2.imshow('gaussian', gaussian)
cv2.waitKey(0)
cv2.destroyAllWindows()

